import axios from 'axios'
import qs from 'qs'
import { MessageBox, Message } from 'element-ui'
import { getToken } from '@/utils/auth'


const service = axios.create({
  baseURL: 'http://www.bufantec.com',
  timeout: 5000 
})

service.interceptors.response.use(response => {
  const res = response.data
  console.log(response)
  if(res.code==='F'){
    console.log(res.code)
    Message({
      message: res.data,
      type: 'error',
      duration: 5 * 1000
    });
    return
}else if(res.token){
  Message({
    message:res.userInfo.username+"，欢迎登陆",
    type: 'success',
    duration: 5 * 1000
  });
}
  if (res.tokenCode === 5000 || res.tokenCode === 5001) {
  // to re-login
  Message({
    message: '登陆超时，请重新登陆',
    type: 'error',
    duration: 5 * 1000
  })
  // 强制跳转登陆页面
  // 本地数据，请不清理看你
  this.$router.push({path:'/login'})
  return
}
return response
})


// 这个config是在调用方法时配置好的包含路径参数在内的一系列属性，在这里做二次处理
function request(config){
        config.headers={}
        // config.headers['bufan-token'] = getToken()
        // 是get基本不用做任何的修改
        // 一般登陆不需要token，so
        if(getToken()){
          config.headers["bufan-token"]=getToken()
        }
        if(config.method.toLowerCase()==='post'){
            // 后端需要这种数据
            config.data=qs.stringify(config.params, { allowDots: true, arrayFormat: 'repeat' })
            // 如果params有值，那么，它会默认将其值拼接在网址后面，而不论你methods用的什么方式
            delete config.params
            config.headers["Content-Type"]='application/x-www-form-urlencoded'
        }
        //这里的services是二次封装好的axios方法，包装的最终目的是为了返回调用axios方法后的promise对象
        console.log(config,1111111111)
        return service(config)

}

export default request
